package modelosDeParcial;

import java.util.Iterator;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;

public class Producto {

	private float precio;
	private String nombre;

	public Producto(String nombre, float precio) {
		this.nombre = nombre;
		this.precio = precio;

	}

	public String getNombre() {
		return this.nombre;
	}

	public float getPrecio() {
		return this.precio;
	}

	/*
	 * post: Devuelve un conjunto ordenado por precio, de productos cuyo precio
	 * esta entre precioMinimo y precioMaximo.
	 */

	public SortedSet<Producto> buscarProductos(List<Producto> productos,
			float precioMinimo, float precioMaximo) {
		SortedSet<Producto> comProductos = new TreeSet<Producto>(
				new ProductoPrecioComparador());
		Iterator<Producto> itProductos = productos.iterator();
		while (itProductos.hasNext()) {
			Producto nextProducto = itProductos.next();
			if (nextProducto.getPrecio() >= precioMinimo
					&& nextProducto.getPrecio() <= precioMaximo) {
				comProductos.add(nextProducto);
			}
		}

		return comProductos;
	}

	/* post: Busca un producto por nombre, si no existe devuelve null. */

	public Producto buscarProducto(List<Producto> productos, String nombre) {
		Iterator<Producto> itProductos = productos.iterator();
		boolean productoEncontrado = false;
		Producto devolverProducto = null;
		while (itProductos.hasNext() && !(productoEncontrado)) {
			Producto productoActual = itProductos.next();
			productoEncontrado = productoActual.getNombre().equals(nombre);
			if (productoEncontrado) {
				devolverProducto = productoActual;
			}
		}
		if (productoEncontrado) {
			return devolverProducto;
		} else {
			return null;
		}
	}
}
